//
//  JZFirstLunch.swift
//  Example
//
//  Created by S JZ on 2024/1/30.
//

import UIKit

public class JZFirstLunch: NSObject {
    @objc public static var onFirstLunch: Bool {
        get {
            guard let value = UserDefaults.standard.value(forKey: "onFirstLunch") as? Bool else { return true }
            return value
        }
        set {
            UserDefaults.standard.setValue(newValue, forKey: "onFirstLunch")
            UserDefaults.standard.synchronize()
        }
    }

    @objc public static var appVersion: String {
        get {
            guard let value = UserDefaults.standard.value(forKey: "appVersion") as? String else { return "" }
            return value
        }
        set {
            UserDefaults.standard.setValue(newValue, forKey: "appVersion")
            UserDefaults.standard.synchronize()
        }
    }

    /// App第一次启动时，需要做的事情（比如更新资源等）
    /// - Parameter action: 需要处理的事情
    @objc public static func firstLunch(perform action: (() -> ())) {
        if onFirstLunch {
            action()
            onFirstLunch = false
        }
    }
    
    /// 升级App时，需要做的事情（当appVersion为""时，可以当成第一次启动）
    /// - Parameter action: 需要处理的事情
    @objc public static func updateApp(perform action: (() -> ())) {
        if appVersion.isEmpty || JZDefine.appVersion != appVersion {
            action()
            appVersion = JZDefine.appVersion
        }
    }
}

